package ctr.affectation;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JOptionPane;

import metier.AffectEleve;
import metier.Affectation;
import metier.Eleve;
import metier.jdbc.affectation.AffectEleveJdbc;
import vue.MenuControle;
import vue.affectation.JPanAjoutAffectation;
import configuration.Constante;
import configuration.MessageAppli;
import ctr.util.DateUtil;

public class GestAjoutAffectation implements ActionListener {

	private JPanAjoutAffectation jPanAjoutAffectation;

	public GestAjoutAffectation(JPanAjoutAffectation jPanAjoutAffectation) {
		this.jPanAjoutAffectation = jPanAjoutAffectation;
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
	if(e.getActionCommand()=="Ajouter")
	{
		
		try
		{
			// Test Date
			Date dateDebutAff = DateUtil.checkDate(Constante.FORMAT_DATE_SHORT, 
					jPanAjoutAffectation.getJTFDateDebutAff().getText());
			if ( dateDebutAff == null){
				throw new Exception(MessageAppli.MSG_DATE_MAUVAIS_FORMAT + Constante.FORMAT_DATE_SHORT);
			}
			
			// Test Date
			Date dateFinAff = DateUtil.checkDate(Constante.FORMAT_DATE_SHORT, 
					jPanAjoutAffectation.getJTFDateFinAff().getText());
			if ( dateFinAff == null){
				throw new Exception(MessageAppli.MSG_DATE_MAUVAIS_FORMAT + Constante.FORMAT_DATE_SHORT);
			}
	
			Eleve unEleve = this.jPanAjoutAffectation.getEleve();
			
			Affectation uneAffect = (Affectation) this.jPanAjoutAffectation.getCBAffectation().getSelectedItem();
			Integer idAffect = uneAffect.getIdAffect();
			
			if(idAffect!=null)
			{
				if(AffectEleveJdbc.ExisteAffectEleve(jdbc.Connexion.getConnexion(), idAffect, unEleve.getIdEleve(), dateDebutAff, dateFinAff))
				{
					AffectEleveJdbc.modifier(jdbc.Connexion.getConnexion(), new AffectEleve(idAffect, unEleve.getIdEleve(), dateDebutAff, dateFinAff));
				}
				else
				{
					AffectEleve uneAffectationEleve = new AffectEleve(idAffect, unEleve.getIdEleve(), dateDebutAff, dateFinAff);
					AffectEleveJdbc.ajouter(jdbc.Connexion.getConnexion(), uneAffectationEleve);
				}
				MenuControle.afficherPan(new JPanAjoutAffectation("Modifier un stage"));
			}
		}catch (Exception e1) {
			e1.printStackTrace();
			JOptionPane.showMessageDialog(jPanAjoutAffectation, e1.getMessage(), MessageAppli.MSG_TITRE_ERREUR_SAISIE,
							JOptionPane.WARNING_MESSAGE);
		}
		
	}
	}
}